// 引入koa
const koa = require('koa')

// 引入路由
const Router = require('koa-router')

// 引入bodyparser
const bodyParser = require('koa-bodyparser')

// 获取路由实例
const router = new Router()

// 获取koa实例
const app = new koa()

const Mock = require('mockjs')

// 解析post put 传来的参数
app.use(bodyParser())

// 引入数据
let { data } = require('./mock')

router.get('/api', (ctx, next) => {
    ctx.body = {
        code: 1,
        msg: '连接成功'
    }
})

// 获取列表数据
router.post('/api/getList', (ctx, next) => {
    // 接口 加分页功能
    const {
        current, // 当前页码
        size = 10, // 每页的条数
    } = ctx.request.body

    const newData = data.filter((item, idx) => {
        return idx >= (current - 1) * size && idx <= current * size - 1
    })

    ctx.body = {
        code: 1,
        data: newData,
        total: data.length
    }
})

// 删除
router.delete('/api/del/:id', (ctx, next) => {

    const { id } = ctx.params

    data = data.filter(item => item.id !== id)

    ctx.body = {
        code: 1,
        msg: '删除成功'
    }
})

// 添加
router.put('/api/addList', (ctx, next) => {
    const { name, address, city } = ctx.request.body

    const obj = {
        name,
        address,
        city,
        id: Mock.mock("@id"),
        date: Mock.mock("@date"),
    }

    // 添加到数组第一项
    data.unshift(obj)

    ctx.body = {
        code: 1,
        msg: '添加成功'
    }
})

// 编辑
router.post('/api/edit', (ctx, next) => {
    const { id } = ctx.request.body

    data = data.map(item => {
        if (item.id === id) {
            // 参数合并  Object.assign：吧第一个参数和第二个参数或者第三个参数 都合并到第一个参数中
            Object.assign(item, ctx.request.body)

            return item
        } else return item
    })

    ctx.body  = {
        code: 1,
        msg: "修改成功"
    }
})




app.use(router.routes())

// 启动服务 监听端口号
app.listen(3001, () => {
    console.log('http:localhost:3001')
})